#include <stdlib.h>
#include <stdio.h>
#include "headers/result.h"

// Allocation de la mémoire et initialisation des structures de données
void initResultat(Resultat *resultat, int nbUsers, int nbGroups, int nbGroups2)
{
	int i;

	(*resultat)->infoTotal = malloc(sizeof(struct info));
	(*resultat)->infoTotal->nbfiles = 0;
	(*resultat)->infoTotal->totalsize = 0.0;
	
	(*resultat)->infoUser = malloc(sizeof(struct info));
	(*resultat)->infoGroup = malloc(sizeof(struct info));
	(*resultat)->infoGroup2 = malloc(sizeof(struct info));
	
	for(i=0; i<nbUsers; i++) {
		(*resultat)->infoUser[i] = malloc(sizeof(struct info));
		(*resultat)->infoUser[i]->nbfiles = 0;
		(*resultat)->infoUser[i]->totalsize = 0.0;
	}
	
	for(i=0; i<nbGroups; i++) {
		(*resultat)->infoGroup[i] = malloc(sizeof(struct info));
		(*resultat)->infoGroup[i]->nbfiles = 0;
		(*resultat)->infoGroup[i]->totalsize = 0.0;
	}
	
	for(i=0; i<nbGroups2; i++) {
		(*resultat)->infoGroup2[i] = malloc(sizeof(struct info));
		(*resultat)->infoGroup2[i]->nbfiles = 0;
		(*resultat)->infoGroup2[i]->totalsize = 0.0;
	}
}

// Libération de la mémoire
void freeResultat(Resultat *resultat, int nbUsers, int nbGroups, int nbGroups2)
{
	int i;
	
	for(i=0; i<nbUsers; i++) {
		free((*resultat)->infoUser[i]);
		(*resultat)->infoUser[i] = NULL;
	}
	for(i=0; i<nbGroups; i++) {
		free((*resultat)->infoGroup[i]);
		(*resultat)->infoGroup[i] = NULL;
	}
	for(i=0; i<nbGroups2; i++) {
		free((*resultat)->infoGroup2[i]);
		(*resultat)->infoGroup2[i] = NULL;
	}
	
	free((*resultat)->infoTotal);
	(*resultat)->infoTotal = NULL;
	free(*resultat);
	*resultat = NULL;
}
